-- table

--[[
    table 可实现 数组，字典等数据结构
    key 可以是任意类型的值，nil除外
    长度不固定，自动扩容
    方法 ：
    table.concat (table , sep , start , end): 以指定字符 拼接 指定长度的table元素
        sep ： 指定的连接字符

    table.insert (table, pos,value): 在指定位置插入指定值

    table.remove (table , pos) ：移除指定位置的元素
    table.sort (table , comp) ： 按照指定函数排序

--]]
fruits = {"banana","orange","apple"}
-- 返回 table 连接后的字符串
print("连接后的字符串 ",table.concat(fruits))

-- 指定连接字符
print("连接后的字符串 ",table.concat(fruits,", "))

-- 指定索引来连接 table
print("连接后的字符串 ",table.concat(fruits,", ", 2,3))


-- 在末尾插入
table.insert(fruits,"mango")
print("索引为 4 的元素为 ",fruits[4])

-- 在索引为 2 的键处插入
table.insert(fruits,2,"grapes")
print("索引为 2 的元素为 ",fruits[2])

print("最后一个元素为 ",fruits[5])

table.remove(fruits)
print("移除后最后一个元素为 ",fruits[5])

-- ------------------------------------------------
fruits = {"banana","orange","apple","grapes"}
print("排序前")
for k,v in ipairs(fruits) do
    print(k,v)
end

table.sort(fruits)
print("排序后")
for k,v in ipairs(fruits) do
    print(k,v)
end

-- 当我们获取 table 的长度的时候无论是使用 # 还是 table.getn 其都会在索引中断的地方停止计数，而导致无法正确取得 table 的长度。
-- 可以使用以下方法来代替：
function table_leng(t)
    local leng=0
    for k, v in pairs(t) do
        leng=leng+1
    end
    return leng;
end


